<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JavaScript基本语法</title>
</head>

<body>

    <!--按钮：JS结合使用？？？事件操作（原型）-->
    <button onclick="add()">add调用函数</button>
    <button onclick="addd(1,2)">add功能函数</button>








    <script>
        //JavaScript输出语句--DOM操作
        //document.write('你好世界');
        //JavaScript输出语句--BOM操作
        //alert('你好世界');
        //JavaScript输出语句--ECMA5.0语法
        //console.log('你好世界');

        /*三大类型：传统类型下number类型*/
        /*变量：可以改变的值 语法：var*/
        var a = 123;
        var b = 123.1;
        var c = 024; //八进制  逢八进一 0~7
        var d = 0x642; //十六进制
        /*三大类型：传统类型下number类型*/
        var e = "lorem";
        var f = 'lorem';
        /*三大类型：传统类型下boolean类型*/
        var bool = true;


        /*内置函数：type0f() 判断javaScript数据类型*/
        document.write(typeof(bool) + "<br>");
        document.writeln(typeof(c) + "<br>");
        document.writeln(typeof(b) + "<br>");

        //练习 验证这是什么类型---->隐式类型转换
        var i = c + bool + 'e' + "l" + 'e' + "m" + 'e' + 'n' + 't';
        document.write(typeof i); //String类型

        //定义变量---常量问题  (关键字：系统定义,保留字：系统定义未使用)
        //标识符：给变量名、函数名起名    
        //规范：见名知意、以$,_,字母开头,标识符不允许是关键字(保留字)
        const PI = 3.1415926; //不可改变值
        var $_123 = 1;
        // var 123 = 1; 错误写法

        document.write("<hr>");
        //三大类型:复合类型下对象类型 object
        var obj = new Object();
        document.write(typeof obj);
        //②创建object类型直接量   ----javascript创建赋值
        var objs = {
            id: 1, //对象的属性，不可以使用var
            //数据类型值：三大类七大种
            name: '王'

        };
        document.write(typeof objs + "<br>");
        document.write(objs.id + "<br>");
        //三大类型：复合类型下数组类型 Array(????)
        //数组:相同数据类型的元素，数组取值方式：数组名[下标：0开始]
        //直接量方式：引用 数组上判断（划掉）
        //①创建Array数型变量
        var arr = new Array();
        document.write(typeof arr + "<br>");
        //②创建Array类型直接量  数组名[4]
        var array = [1, 2, 3, 4, 5];
        document.write("直接量:" + typeof array + "<br>");
        document.write("直接量打印数组:" + array[4] + "<br>");

        //三大类型：复合类型下函数类型(Function 重点)
        //①创建Function数型变量
        var fun = new Function();
        document.write(typeof fun + "<br>");
        //②创建Function类型  《直接量》   ---实现功能：加法运算
        function add() { //函数---触发器(事件)
            alert('加法运算步骤');
        }
        //语法：function (形参：传参+函数调用)
        function addd(x, y) {
            //----实现功能：加法运算  return关键字 弹出结果值(无法打印)
            return x + y;
        }
        //不用按钮，直接使用带参函数，页面打印
        document.write(addd(1, 2) + "<br>");

        //三大类型：特殊类型 undefined未定义类型（程序出错出现）
        var k; //声明变量未赋值
        document.write(k);
        //三大类型：特殊类型 null未定义类型（对象赋值为空---AJAX）
        var obj = null;
        //添加空，复合类型，清空数据，赋值数据
        obj = [1, 2, 3];

        /*鄙视题：
        1.javascript有多少种数据类型？
        7个 number、String、boolean、object(array)、function、null、undefined
        2.浏览器控制台 var i=1;看效果，解释为什么？
        var i=1;     ----->var i; i=1;
        undefined 未定义类型 JavaScript变量特点：声明提前(原型链)

        3.变量相加，结果值：
            var js=1;
            var js=2.0; 整数+小数(2.0小数部分是0)=隐式类型转换（整数）
            var ks=true;boolean布尔类型：运算 true==1 false==0
            var sum=is+js+ks; 结果值：
        */
        alert(1 + 2.0 + true + false);
    </script>
</body>

</html>